____ _ _ _ _
| _ \ ___ | |_ (_) _ __ ___ __| | (_) __ _
| |_) | / _ \ | __| | | | '_ \ / _ \ / _| | | | / _ |
| _ < | __/ | |_ | | | |_) | | __/ | (_| | | | | (_| |
|_| \_\ \___| \__| |_| | .__/ \___| \__,_| |_| \__,_|
|_|
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b
Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―
Common Language Specification
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
top
Die Common Language Specification (CLS) ist ein Teil des Common-Language-Infrastructure-Standards, der die Entwicklung von programmiersprachenneutralen Programmkomponenten ermΓΆglicht. Die CLS garantiert, dass jedes Programm bzw. jeder Programmteil (z. B. eine einzelne Klasse), der CLS-konform entwickelt worden ist, in jeder anderen CLS-kompatiblen Programmiersprache vollstΓ€ndig genutzt werden kann.
Contents
β’ Beispiele
β’ Weblinks
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Konzept der Common Language Specification
Als Teil der programmiersprachenneutralen Plattform einer Common-Language-Infrastructure-Implementierung (z. B. das .Net-Framework von Microsoft) ist es notwendig, die Interaktion zwischen verschiedenen Programmiersprachen zu regeln. Da nicht jede Programmiersprache denselben Funktionsumfang bietet, ist eine sprachΓΌbergreifende Programmierung nicht automatisch mΓΆglich. Die CLS spezifiziert aus diesem Grund eine Teilmenge des CLI-Standards, der von jeder CLS-kompatiblen Programmiersprache mindestens verstanden werden muss, um SprachneutralitΓ€t herzustellen. Die Regeln der CLS gelten dabei immer nur fΓΌr ΓΆffentliche (public oder protected) Schnittstellen. In der internen Realisierung gelten keinerlei EinschrΓ€nkungen durch die CLS.
Umsetzung der Common Language Specification
Die meisten Programmiersprachen aus dem .NET-Umfeld erlauben es dem Entwickler zu wΓ€hlen, ob er seine Programme oder Programmkomponenten CLS-kompatibel entwickeln will. Dazu wird meist das Metadatenattribut [ClsCompliant (true)] verwendet, das den Compiler (z. B. von C# oder VB.NET) anweist, bei der Kompilierung zu prΓΌfen, ob die CLS eingehalten wurde. Ist dies nicht der Fall, wird ein Compilerfehler erzeugt.
Alle Teile der Klassenbibliotheken von .NET sind CLS-kompatibel.
Beispiele
Folgende Liste enthΓ€lt einige Beispiele von nicht CLS-kompatiblen Elementen. Diese kΓΆnnen zwar Teil der Implementierung sein, dΓΌrfen aber nicht als Teil der ΓΆffentlichen Schnittstellen eingesetzt werden.
β’ Vorzeichenlose Datentypen, wie z. B. uint, ulong.
β’ Elemente (Klassen, Methoden, Felder usw.), die sich nur durch eine unterschiedliche GroΓschreibung ihres Namens unterscheiden.
β’ Pointer (Zeiger) und alle anderen damit in Verbindung stehenden Konstrukte und Sprachelemente (im Kontext von .NET als βunsafeβ bezeichnet).
β’ Globale statische Methoden
β’ Interfaces mit statischen Methoden oder Feldern
β’ Klassen, die nicht von CLS-kompatiblen Klassen erben
β’ Arrays variabler GrΓΆΓe oder Arrays, die nicht bei Element 0 beginnen
β’ Γberladen von Feldern und Ereignissen
Weblinks